Q6. 次のspeechの空行に、speech2から順番に行を拾って埋め込んで、結婚式のスピーチを完成させてください
from 第44回 シェル芸勉強会振り返り 問題と解答
#Q&A #python #bash
次のspeechの空行に、speech2から順番に行を拾って埋め込んで、結婚式のスピーチを完成させてください
code:bash
$ cat speech
このうんこを作った
のは誰だあっ!!う
夜。秋は夕暮れ。冬
はうんこハァ テレ
無ェ、生まれてこの
やつはとんでもない
ものを盗んでいきま
の?疲れからか、
$ cat speech2
んこも休み休み言え
春はあけぼの。夏は
ビも無ェ、うんこも
かた見だごとア無ェ
した。あなたのうん
こですお前それうん
こでも同じ事言えん
2つのファイルを結合したいときはjoinコマンドとかを使うけれど、今回は何を結合のキーにするか悩んだ
ぱっと思いつかなかったのでPythonでやった
もはやワンライナーではないが・・・
code:join.sh
a=ShellGeiData/vol.44/speech2
b=ShellGeiData/vol.44/speech
cat << E > z
lines = []
with open("$a") as in1:
for line in http://in1.read().split("\n"):
lines.append(line)
with open("$b") as in1:
n = 0
for line in http://in1.read().split("\n"):
if line == "":
print(linesn)
n += 1
else:
print(line)
E
python3 z #シェル芸
https://twitter.com/minyoruminyon/status/1187977927033442304
他の人のやり方を見ていて一番良いなぁと思ったのは以下のやりかた
http://papiro.hatenablog.jp/entry/2019/10/27/002723#Q6
code:join2.sh
join -a 1 -o 1.2 2.2 <(awk '{printf "%02d %s\n", NR, $0}' speech) <(awk 'length==0{printf "%02d\n",NR}' speech | paste -d ' ' - speech2) |tr -d " "
このうんこを作った
のは誰だあっ!!う
んこも休み休み言え
春はあけぼの。夏は
夜。秋は夕暮れ。冬
はうんこハァ テレ
ビも無ェ、うんこも
無ェ、生まれてこの
かた見だごとア無ェ
やつはとんでもない
ものを盗んでいきま
した。あなたのうん
こですお前それうん
こでも同じ事言えん
の?疲れからか、
空行の行番号を結合するファイルの先頭に追加してjoinでつなぐというやり方